Skip to content

fix(error-tracking): query issues by severity - #86409

Merged
trunk-io[bot] merged 4 commits into
masterfrom
posthog/error-tracking-severity-hogql
Aug 24, 2026
Merged

trunk-io[bot] merged 4 commits into
masterfrom
posthog/error-tracking-severity-hogql

Conversation

@hpouillot

@hpouillot hpouillot commented Aug 20, 2026 •

Copy link
Copy Markdown
Contributor

Problem

Issue queries cannot return or filter assigned severity.

The query state types accept severity, but HogQL does not read the fingerprint state field.

PR stack

Merge in this order:

  1. feat(error-tracking): expose severity in system table #83279
  2. fix(error-tracking): add severity to issue query state #83107
  3. fix(error-tracking): query issues by severity #86409 - this PR
  4. fix(error-tracking): type severity in query responses #86410
  5. fix(error-tracking): expose issue severity in MCP queries #86411

Depends on: #83107

Followed by: #86410

Changes

  • Issue queries return assigned severity from optimized and legacy query shapes.
  • Severity filters support exact values, set values, and unset values.
  • Pending issue updates preserve severity while ClickHouse catches up.
  • Query snapshots and the cache version change mechanically.
  • No visual changes.

How did you test this code?

  • The pending-state and severity-filter regression cases passed.
  • Not run to completion: the full query suite hit a local ClickHouse open-file limit after the changed cases passed.
  • Ruff passed on the changed Python files.

👉 Stay up-to-date with PostHog coding conventions for a smoother review.

Automatic notifications

  • Publish to changelog?

Docs update

None. A later stack layer updates MCP guidance.

🤖 Agent context

Autonomy: Human-driven (agent-assisted)

Pi split the existing severity change into a focused HogQL layer under human direction.

Skills invoked: /stacking-prs, /writing-tests, /writing-code-comments, /writing-simplified-technical-english, and /writing-pr-descriptions.

Add severity to generated issue query models and pending state updates so later query execution changes can consume it safely.

Generated-By: PostHog Desktop
Task-Id: 543f7db8-9779-4818-8a8a-2e060579439a
Expose severity through the fingerprint state join, return it from both query shapes, and support exact and presence filters.

Generated-By: PostHog Desktop
Task-Id: 543f7db8-9779-4818-8a8a-2e060579439a
@hpouillot hpouillot self-assigned this Aug 20, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Hey @hpouillot! 👋

It looks like your git author email on this PR isn't your @posthog.com address (hpouillot@gmail.com). Since you're on the PostHog team, it's worth pointing your local git author email at your @posthog.com address. Why it matters:

  • Consistent work identity in git history — internal tooling that attributes commits to team members keys off your @posthog.com address.
  • Keeps team contributions easy to tell apart from external community ones when scanning history.

You can fix it for this repo with:

git config user.email "you@posthog.com"

Or set it globally with git config --global user.email "you@posthog.com". No need to redo this PR — just a nudge for next time. 🙂

@github-actions

github-actions Bot commented Aug 20, 2026 •

Copy link
Copy Markdown
Contributor

🤖 CI report

⚠️ Trunk lane — backend Python lane

This PR is assigned to the backend Python lane. It runs backend Python tests and may merge in parallel with PRs in other lanes.

✅ Bundle size — no change

Uncompressed size of every built .js bundle, compared against the base branch.

Total: 68.56 MiB · no change

No file changed by more than 1000 B.

Posted automatically by build-bundle-size-report · uncompressed bytes from dist-report

✅ Eager graph — within budget

How much code each root ships on the eager path — downloaded and parsed before the surface is interactive. Measured from the esbuild output chunks (post-tree-shake, static imports only); lazy import() / React.lazy chunks are not counted.

Root Eager (shipped) Δ vs base Budget
entry (logged-out pages, app bootstrap)
src/index.tsx
1.35 MiB · 22 files no change ███░░░░░░░ 30.0% of 4.51 MiB
authenticated shell (every logged-in page)
src/scenes/AuthenticatedShell.tsx
8.61 MiB · 3,171 files no change █████████░ 88.6% of 9.71 MiB

🟢 node_modules/monaco-editor/ stays out of src/index.tsx
🟢 src/lib/components/ActivityLog/describers stays out of src/index.tsx
🟢 [object Object] stays out of src/index.tsx
🟢 [object Object] stays out of src/index.tsx
🟢 node_modules/monaco-editor/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/lib/components/ActivityLog/describers stays out of src/scenes/AuthenticatedShell.tsx
🟢 [object Object] stays out of src/scenes/AuthenticatedShell.tsx
🟢 [object Object] stays out of src/scenes/AuthenticatedShell.tsx

Largest files eagerly shipped from src/index.tsx
Size File
126.8 KiB ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js
24.6 KiB ../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js
6.3 KiB ../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.production.min.js
4.5 KiB ../node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/process.js
3.9 KiB ../node_modules/.pnpm/scheduler@0.23.2/node_modules/scheduler/cjs/scheduler.production.min.js
1.4 KiB ../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js
1.3 KiB src/RootErrorBoundary.tsx
912 B ../node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js
789 B src/scenes/ChunkLoadErrorBoundary.tsx
762 B src/index.tsx
Largest files eagerly shipped from src/scenes/AuthenticatedShell.tsx
Size File
304.7 KiB ../node_modules/.pnpm/posthog-js@1.418.5/node_modules/posthog-js/dist/rrweb.js
267.7 KiB ../node_modules/.pnpm/@posthog+icons@0.38.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js
250.7 KiB ../node_modules/.pnpm/posthog-js@1.418.5/node_modules/posthog-js/dist/module.js
246.9 KiB src/taxonomy/core-filter-definitions-by-group.json
154.2 KiB ../node_modules/.pnpm/re2js@0.4.1/node_modules/re2js/build/index.esm.js
126.8 KiB ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js
104.4 KiB src/lib/api.ts
95.1 KiB ../packages/quill/packages/quill/dist/index.js
93.3 KiB ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js
90.6 KiB ../node_modules/.pnpm/@tiptap+core@3.20.6_@tiptap+pm@3.20.6/node_modules/@tiptap/core/dist/index.js

Posted automatically by check-eager-graph · sizes are eager output bytes (shipped, post-tree-shake) from the esbuild metafile · part of #32479

✅ Toolbar bundle — eager 2.24 MiB within budget

What the toolbar ships to customer pages, measured from the esbuild output (minified, post-tree-shake). The eager set is the entry plus everything statically imported from it — fetched before any feature runs; deferred chunks load lazily. The eager guardrail is 5.72 MiB. Each output file must also stay below 10 MB, where CloudFront stops compressing it. The module boundary is enforced separately by check-toolbar-graph.

Metric Size Δ vs base Budget
Eager (shipped)
entry + static imports
2.24 MiB · 17 files no change ████░░░░░░ 39.1% of 5.72 MiB
Deferred (lazy) 2.09 MiB · 33 files no change n/a — loads on demand
Loader dist/toolbar.js 1.1 KiB no change █░░░░░░░░░ 5.8% of 19.5 KiB
Largest eagerly-shipped chunks
Size File
742.9 KiB dist/toolbar/toolbar-app-AH5DY6W6.css
574.5 KiB dist/toolbar/chunk-chunk-VXEEDYQS.js
484.6 KiB dist/toolbar/chunk-chunk-QYFXPLLF.js
133.6 KiB dist/toolbar/chunk-chunk-FTKXDK3B.js
131.8 KiB dist/toolbar/chunk-chunk-T5KY5WYR.js
71.2 KiB dist/toolbar/toolbar-app-K7CQIUST.js
69.0 KiB dist/toolbar/chunk-chunk-27JL52RE.js
35.6 KiB dist/toolbar/chunk-chunk-ZNZAD6EW.js
20.9 KiB dist/toolbar/chunk-chunk-3D5VNREA.js
12.2 KiB dist/toolbar/chunk-chunk-PIK3PADE.js

Posted automatically by check-toolbar-size · sizes are toolbar output bytes (shipped, post-tree-shake) from the esbuild metafile

✅ Dist folder size — no change

Total size of the built frontend/dist folder (all assets), compared against the base branch.

Total: 1460.82 MiB · no change

⚠️ Playwright — 1 failed

🎭 Playwright report · View test results →

❌ 1 failed test:

  • Hover chart to see tooltip with data point values (chromium)

These issues are not necessarily caused by your changes.
Annoyed by this section? Help fix flakies and failures and it will go green!

@trunk-io

trunk-io Bot commented Aug 20, 2026 •

Copy link
Copy Markdown

Static Badge   Static Badge   Static Badge

View Full Report ↗︎ ⋅ Docs

Generated-By: PostHog Desktop
Task-Id: 543f7db8-9779-4818-8a8a-2e060579439a
…king-severity-hogql

Generated-By: PostHog Desktop
Task-Id: 543f7db8-9779-4818-8a8a-2e060579439a
Base automatically changed from hp/error-tracking-severity-mcp to master August 20, 2026 15:51
@trunk-io

trunk-io Bot commented Aug 20, 2026 •

Copy link
Copy Markdown

😎 Stack merged successfully - details.

@hpouillot
hpouillot marked this pull request as ready for review August 20, 2026 16:01
@hpouillot
hpouillot requested a review from a team as a code owner August 20, 2026 16:01
@hpouillot hpouillot added the stamphog Request AI approval (no full review) label Aug 20, 2026 — with PostHog
@github-actions

github-actions Bot commented Aug 20, 2026 •

Copy link
Copy Markdown
Contributor

🦔 Hogbox preview · ✅ ready

▶ Open the preview

🔑 Login test@posthog.com / 12345678 (demo data)
🧩 Running this PR's backend and frontend, on the PostHog :master base
🔗 Link stable across rebuilds — a re-push swaps the box underneath, the URL stays
🔒 Access tailnet only (PostHog VPN)
🛠️ Admin inspect & debug state in hogland
💤 Idle sleeps after ~30 min idle (snapshot to S3, zero node cost) and wakes on your next visit in ~30s, behind a brief "waking up" screen

commit bf0a6d7 · box box-f106edefd678 · ready in 633s (push → usable) · build log · rebuilds on every push, torn down on close

@greptile-apps

greptile-apps Bot commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Reviews (1): Last reviewed commit: "Merge branch 'hp/error-tracking-severity..." | Re-trigger Greptile

@stamphog stamphog Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adds a nullable, backward-compatible severity field across the error-tracking query schema, filters, and pending-update reconciliation logic; the bulk of the diff is mechanical (generated schema/snapshot files), the hand-written logic is small and covered by new tests (exact/is_set/is_not_set filter cases, pending-update constant assertion), and the description accurately matches the diff with no undisclosed behavior.

  • Author wrote 10% of the modified lines and has 109 merged PRs in these paths (familiarity MODERATE).
  • 👍 on the PR from greptile-apps[bot].
Gate mechanics and policy version
Gate Result
prerequisites ✓ all clear
deny-list ✓ no deny categories matched
size ✓ 107L, 11F substantive, 504L/20F incl. docs/generated/snapshots — within ceiling
tier ✓ T1-agent / T1d-complex (504L, 20F, cross-cutting, fix)
stamphog 2.0.0b4 .stamphog/policy.yml @ bf0a6d7 · reviewed head bf0a6d7

@trunk-io
trunk-io Bot merged commit cd20dd2 into master Aug 24, 2026
434 of 436 checks passed
@trunk-io
trunk-io Bot deleted the posthog/error-tracking-severity-hogql branch August 24, 2026 09:30
@deployment-status-posthog

deployment-status-posthog Bot commented Aug 24, 2026 •

Copy link
Copy Markdown

Deploy status

Environment Status Deployed At Workflow
dev ✅ Deployed 2026-08-24 09:59 UTC Run
prod-us ✅ Deployed 2026-08-24 10:16 UTC Run
prod-eu ✅ Deployed 2026-08-24 10:19 UTC Run

This branch was successfully deployed

1 active deployment
preview-pr-86409 — bf0a6d7a Deployed Aug 20, 2026 by github-actions[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

stamphog Request AI approval (no full review)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants